<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001435119854495d29b9b3d7028477a96ed74db95032675000
    // 由于map()方法定义在JavaScript的Array中，
    // 我们调用Array的map()方法，传入我们自己的函数，就得到了一个新的Array作为结果：

    //1 eg.1
    function pow(x) {
        return x * x;
    }
    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    var outArr = [];
    console.log(arr.map(pow))
    arr.forEach(function (value, index) {
        outArr.push(pow(value))
    })
    console.log(outArr);

    // 2 要把[1, 3, 5, 7, 9]变换成整数13579，reduce()也能派上用场：
    var arr2 = [1, 3, 5, 7, 9];
    arr2.reduce(function (x, y) {
        return x * 10 + y;
    })

    var sumAll = (...numbers) => numbers.reduce(
                    (total, next) => total + next
    )
    console.log(sumAll(1, 2, 5))
    /**
    eg.3 如果我们继续改进这个例子，想办法把一个字符串13579先变成Array——[1, 3, 5, 7, 9]，
    再利用reduce()就可以写出一个把字符串转换为Number的函数。
    不要使用JavaScript内置的parseInt()函数，利用map和reduce操作实现一个string2int()函数：
    **/
    function string2int(s){
        var arr = s.split(''); //拆分字符串为一个String类型的数组
        // var arr=Array.from(s);
        arr = arr.map(function(x){  //将String类型数组的每个元素转化为Int类型
            return x-0
        })
        return arr.reduce(function(x,y){  //计算Int类型数组合成的数字
        })
    }
    function string2int(s){
        return s.split('').map(x => {return x-0}).reduce((x, y )=>{return x*10 + y});
    }


    /*eg 4 请把用户输入的不规范的英文名字，变为首字母大写，其他小写的规范名字。
     输入：['adam', 'LISA', 'barT']，输出：['Adam', 'Lisa', 'Bart']。
    */
    function normalize(arr){
       return arr.map(x=>{return x.charAt(0).toUpperCase()+ x.substring(1).toLowerCase()})
    }
    
    console.log(test(['adam', 'LISA', 'barT']))
</script>

</html>
